/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package docmanager.operation.sectores;


import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import bf.DataAccess;
import bf.operation.Operation;
import bf.operation.OperationException;
import bf.utils.Util;
import docmanager.business.objects.Sector;
import docmanager.db.ConnectionPool;

/**
 *
 * @author Jose Luis
 */
public class OpModificarSector2 extends Operation
{
	String returnURL = "DMController?op=ListarSectores";
    
    public Map execute(HttpServletRequest request) throws OperationException
    {
    	boolean error = false;
    	String message = "<h2>Hubo un error al intentar agregar el sector</h2>";
    	if (request.getParameter("id") == null || request.getParameter("id").compareTo("") == 0) {
    		error = true;
    		message = "<h2>El sector debe tener un ID.</h2>";
    	}
    	if (request.getParameter("descripcion") == null || request.getParameter("descripcion").compareTo("") == 0) {
    		error = true;
    		message = "<h2>El sector debe tener una descripcion.</h2>";
    	}
        if (error) {
            this.returnURL = "DMController?op=ModificarSector1";
            Map m = new HashMap();
            m.put("mensaje", message);
            return m;                        	
        }
        
        int id = Integer.parseInt(request.getParameter("id"));	//FIXME: Luke: al modificar no deberia poder cambiar el ID, no? Me parece que pdoer cambiarlo es bastante al pedo, asi que no lo hice como para que se pueda modificar, pero si hay que hacerlo decime y lo hago.
        String newDescripcion = request.getParameter("descripcion");
        String oldDescripcion = request.getParameter("oldDescripcion");
        
        Connection conn = null;
        try
        {
            conn = ConnectionPool.getConnection();
        } catch (SQLException sQLException)
        {
            sQLException.printStackTrace();
            throw new OperationException();
        }
        //Si el ID o sector ya existe, cancelar todo.
        try
        {
            System.out.println("OpModificarSector2: chequeando existencia usuario");
            
            if (!newDescripcion.equals(oldDescripcion) && Sector.existeSector(conn, newDescripcion))
            {
                this.returnURL = "DMController?op=ModificarSector1";
                Map m = new HashMap();
                m.put("mensaje", "<h2>Sector ya existente</h2>");
                ConnectionPool.closeConn(conn);
                return m;                
            }
            Sector sector = new Sector(id, newDescripcion);
            sector.modificar(conn);
            ConnectionPool.closeConn(conn);
        } catch (SQLException sQLException)
        {
            sQLException.printStackTrace();
            throw new OperationException();            
        }
        Map m = new HashMap();
        m.put("mensaje", "<h2>Sector modificado con exito</h2>");
        return m;
    }
    
    public String getReturnURL()
    {
       return returnURL; 
    }
}
